package com.woniuxy.utils;

import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @BelongsProject: java-85-course-code
 * @BelongsPackage: com.woniuxy.utils
 * @Author: LiTongMiao
 * @Date: 2022/1/27 17:17
 * @Description: TODO
 */
public class StringDate implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        //这里这样写equlal是因为这样可以避免空指针异常
       if ("".equals(source)||source==null){
           return null;
       }
       System.out.println("原格式日期："+source);


        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy/MM/dd");
        SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy MM dd");
        SimpleDateFormat simpleDateFormat4 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm");

        //这里应该注意在解析时间的时候，应该把复杂的先匹配，应为简单的匹配也可以包含那些难的匹配
        try {
            //解析yyyy-MM-dd
            Date parse = simpleDateFormat4.parse(source);
            return parse;
        } catch (ParseException e) {
            try {
                //解析yyyy/MM/dd
                Date parse = simpleDateFormat2.parse(source);
                return parse;
            } catch (ParseException ex) {
                try {
                    //解析 yyyy MM dd
                    Date parse = simpleDateFormat3.parse(source);
                    return parse;
                } catch (ParseException exc) {
                    try {
                        Date parse = simpleDateFormat.parse(source);
                        return parse;
                    } catch (ParseException parseException) {
                        parseException.printStackTrace();
                    }
                    exc.printStackTrace();
                }
                ex.printStackTrace();
            }
            e.printStackTrace();
        }
        return  null;
    }
}
